package com.bicon.botu.mall.coupon.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.bicon.botu.core.base.common.entity.BaseResult;
import com.bicon.botu.mall.coupon.dto.CouponsPageDto;
import com.bicon.botu.mall.coupon.entity.Coupons;

import java.util.List;

/**
 * <p>
 * 优惠券实体类 服务类
 * </p>
 *
 * @author 吕祥
 * @since 2017-07-19
 */
public interface ICouponsService extends IService<Coupons> {

    /**
     * 新增 优惠券
     *
     * @param name           活动名称
     * @param discountAmount 优惠金额
     * @param orderAmount    订单最小金额
     * @param number         优惠券数量
     * @param firsDate       开始使用日期
     * @param lastDate       最后使用日期
     * @param issueDate      优惠券发行日期
     * @param endingDate     优惠券发行结束日期
     * @param path           优惠券使用范围
     * @param remarks        备注
     * @param shopName       商家名称
     * @param issueState     发行状态
     * @return
     */
    BaseResult add(String name, String discountAmount, String orderAmount, Integer number,
                   String firsDate, String lastDate, String issueDate, String endingDate,
                   String path, String remarks, String shopName, Integer type, int issueState);


    /**
     * 修改优惠券
     *
     * @param id             优惠券id
     * @param name           活动名称
     * @param discountAmount 优惠金额
     * @param orderAmount    订单最小金额
     * @param number         优惠券数量
     * @param firsDate       开始使用日期
     * @param lastDate       最后使用日期
     * @param issueDate      优惠券发行日期
     * @param endingDate     优惠券发行结束日期
     * @param path           优惠券使用范围
     * @param remarks        备注
     * @param shopName       商家名称
     * @return
     */
    BaseResult updateById(String id, String name, String discountAmount, String orderAmount,
                          Integer number, String firsDate, String lastDate, String issueDate,
                          String endingDate, String path, String remarks, String shopName, Integer type);

    /**
     * 批量删除优惠券
     *
     * @param idJson 优惠券id集合(Json格式参数)
     * @return
     */
    BaseResult deleteById(String idJson);

    /**
     * 发行
     *
     * @param id 优惠券id
     * @param issueState     发行状态
     * @return
     */
    BaseResult issue(String id, int issueState);

    /**
     * 优惠券分页查询
     *
     * @param pageNo   页面数
     * @param pageSize 每页大小
     * @param name     活动名称
     * @return
     */
    Page<CouponsPageDto> page(int pageNo, int pageSize, String name);

    /**
     * 查询所有在发行期内的优惠券
     *
     * @return 所有在发行期内的优惠券
     */
    List<Coupons> findAllRedis();

}
